Skip to content

Add tool to identify tablets that need compaction#3650

Open
tom-vt4 wants to merge 11 commits into
integrationfrom
task/tabletExtentTool
Open

Add tool to identify tablets that need compaction#3650
tom-vt4 wants to merge 11 commits into
integrationfrom
task/tabletExtentTool

Conversation

@tom-vt4

@tom-vt4 tom-vt4 commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

Add a utility tool that is able to identify tablets that need compaction. This tool is hosted in the project check-tablet-extents and can be built as an executable JAR.

Closes #3581

@tom-vt4
tom-vt4 requested review from ivakegg and lbschanno July 1, 2026 00:06
@ivakegg

ivakegg commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

In general this looks really good. I only had one comment in there. For extra credit I would like for this tool to optionally (based on a parameter) actually kick off the compactions.

@tom-vt4
tom-vt4 force-pushed the task/tabletExtentTool branch from b2efc96 to 8558761 Compare July 6, 2026 16:11
tom-vt4 added 2 commits July 6, 2026 12:13
Add a utility tool that is able to identify tablets that need
compaction. This tool is hosted in the project check-tablet-extents and
can be built as an executable JAR.

Closes #3581
@lbschanno
lbschanno force-pushed the task/tabletExtentTool branch from 8558761 to a7686ad Compare July 6, 2026 16:13
@tom-vt4
tom-vt4 requested a review from ivakegg July 6, 2026 16:17
tom-vt4 added 2 commits July 6, 2026 18:50
-Add main method back to allow usage of the tool with java -cp
-Update README for usage of tool with accumulo command
-Fix dependency issues
Comment thread contrib/datawave-utils/check-tablet-extents/README.md Outdated
tom-vt4 added 2 commits July 8, 2026 17:43
-Replace AccumuloClient usage with ServerContext
-Test class requires refactoring for ServerContext
-Removed create-shade-jar profile to use regular jar
-Use ClientContext instead of ServerContext to allow test suite to
create MiniAccumuloCluster for testing
-Refactor original checkTablets() to findCompactableTablets() to handle
extent tracking
-Add new checkTablets() method to handle tool output and parameter based
compaction
-Update documentation
-Update error logging
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
Comment thread contrib/datawave-utils/check-tablet-extents/pom.xml Outdated
@lbschanno

Copy link
Copy Markdown
Collaborator

Overall looks pretty good. Made a couple suggestions.

-This parameter isn't required if accumulo.properties is on classpath
-Debug parameter controls tablet extent logging
-Removed redundant dependencies in pom.xml
@tom-vt4
tom-vt4 requested a review from lbschanno July 14, 2026 15:06
@tom-vt4
tom-vt4 requested review from dlmarion and ivakegg July 16, 2026 05:02
return false;
}

public static void checkTablets(ClientContext context, String tableName, Text begin, Text end, boolean mergeExtents, boolean compactTablets, boolean debug)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar not here about making the argument list simpler by passing in the Opts instance.

* @throws IOException
* if an error occurs while reading the client properties file
*/
static List<Pair<Text,Text>> findCompactableTablets(ClientContext context, String tableName, Text begin, Text end, boolean mergeExtents, boolean debug)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're starting to pass a fair number of arguments to this method now. It would be simpler to just pass in the Opts instance as an argument, and fetch the appropriate information from it.

* if an error occurs while reading the client properties file
*/
@Override
public void execute(String[] args) throws AccumuloException, TableNotFoundException, IOException, AccumuloSecurityException {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to see the functions ordered a bit differently here. I'd like to see them in the following order:

  • main
  • execute
  • checkTablets
  • formatArg

This allows for a more natural progression of understanding the logic flow when reading over the code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Need to identify tablets requiring forced compactions

4 participants